// 导包是什么意思? 就是require(包)，需要什么功能就导入什么包。（别人封装的功能）
// 导入express框架 (npm)
const express = require('express');
// 创建一个web应用程序
const app = express();
// 导入设置资源跨域共享的包 (npm)
const cors = require('cors');
// 导入处理数据编码的依赖模块(npm)
const bodyParser = require('body-parser');
// 导入path模块（nodejs环境内置的模块）
const path = require('path');
// 导入模板引擎依赖
const ejs = require('ejs');

// 解析 application/x-www-form-urlencoded 类型的数据
app.use(bodyParser.urlencoded({ extended: false }));
// 解析 application/json 类型数据
app.use(bodyParser.json());
// 使用资源跨域共享的包
app.use(cors());


// 视图渲染引擎
app.set('views', path.join(__dirname, 'views'));
// 配置Express 视图引擎
app.engine('html', ejs.__express);
app.set('view engine', 'html');

// 页面地址：
// 渲染页面
app.get('/',(req,res)=>{
    // 渲染views/index.html文件
    res.render('index',{title: "欢迎使用express搭建web服务！主页"});
})
app.get('/other',(req,res)=>{
    // 渲染views/index.html文件
    res.render('other',{title: "其他页面"});
})


// 接口地址
// 一级路由
// 测试接口
app.get('/test', async (req,res)=> {
    res.send({
        code: 200,
        msg: '测试成功。'
    })
})
// 导入用户路由并使用
// app.use('/user',require('./routers/user/index.js'));
// app.use('/user',require('./routers/user/index'));
//  '/user' 一级路由
//  '/user/list' 二级路由
app.use('/user',require('./routers/user'));

// 导入管理员路由
app.use('/admin',require('./routers/admin'));

// 导入题库路由
app.use('/topic_lib',require('./routers/topicLib'));

// 导入考试路由
app.use('/exam',require('./routers/exam'));

// 导入题目路由
app.use('/topic',require('./routers/topic'));

// 导入成绩路由
app.use('/score',require('./routers/score'));


// 设置静态资源目录
// http://localhost:3000/web/index.html
// app.use(express.static('public'));

// __dirname 全局变量
// D:\GZH52275\vue_second_project\day02\源码\www\server
let staticPath = path.join(__dirname,'public');
app.use(express.static(staticPath));

// http://localhost:3000/static/web/index.html
// app.use('/static',express.static('public'));
// 设置服务端端口
app.listen(3000, ()=> {
    console.log("后台服务开启了...");
    console.log("http://127.0.0.1:3000");
    console.log("http://localhost:3000");
})